Open-loop motor control

ABSTRACT

A motor controller adapted to be coupled to a motor having a rotor. The motor controller includes a storage device containing software. The motor controller also includes a processor core coupled to the storage device and adapted to be coupled to the motor. The processor core is configured to operate the motor in an open-loop control in response to determining a speed of the rotor determined based on an inverse exponential function with respect to time.

BACKGROUND

Many types and configurations of electric motors are availableincluding, for example, direct current (DC) motors and alternatingcurrent (AC) motors. AC motors are available in various types as well(including, for example, three-phase motors. A three-phase motorincludes, for example, three pairs of stator windings, Three sinusoidalcurrents, one for each pair of stator windings, are generated by, forexample, a DC-to-AC inverter. The three sinusoidal signals (e.g.,currents) are 120 degrees out-of-phase with respect to each other. Withreference to a first of the sinusoidal currents, a second current is 120degrees out-of-phase, and a third current is 240 degrees out-of-phasewith respect to the first of the sinusoidal currents.

SUMMARY

In one example, a motor controller adapted to be coupled to a motorhaving a rotor. The motor controller includes a storage devicecontaining software. The motor controller also includes a processor corecoupled to the storage device and adapted to be coupled to the motor.The processor core is configured to operate the motor in an open-loopcontrol in response to determining a speed of the rotor determined basedon an inverse exponential function with respect to time.

In another example, a motor controller also includes a storage devicecontaining software and a processor core. The processor core isconfigured to operate the motor in an open-loop control in response todetermining a speed of the rotor determined based on a quadraticfunction. The quadratic function includes a first term with respect totime and a second term with respect to the square of time, the firstterm including a first mechanical property of the motor, and the secondterm including a second mechanical property of the motor and a square ofthe first mechanical property.

In yet another embodiment, a method for controlling a motor having arotor in an open-loop operation includes calculating rotor speed basedon an inverse exponential function with respect to time and generating acurrent for the motor based on the calculated motor speed.

In another embodiment, a method for controlling a motor having a rotorin an open-loop operation includes calculating rotor speed based onquadratic function which includes a first term with respect to time anda second term with respect to a square of time. The first term includesa first mechanical property of the motor, and the second term includes asecond mechanical property of the motor and a square of the firstmechanical property. The method also includes generating a current forthe motor based on the calculated motor speed.

BRIEF DESCRIPTION OF THE DRAWINGS

For a detailed description of various examples, reference will now bemade to the accompanying drawings in which:

FIG. 1 is a block diagram of a motor and a system for controlling themotor in accordance with an example.

FIG. 2 is a functional block diagram of a field-oriented control (FOC)technique for controlling the motor and including an auto-handoffcontroller to switch motor control from open-loop control to closed-loopcontrol in accordance with an example.

FIG. 3 is a vector diagram illustrating the relationship between thetime-domain motor sense currents and an orthogonal reference implementedby the Clarke transformation.

FIG. 4 is a vector diagram illustrating the relationship between theorthogonal reference implemented by the Clarke transformation and arotating reference frame implemented by the Park transformation.

FIG. 5 is a graph illustrating examples of estimated motor speed versustime using an inverse exponential function and a quadratic function.

FIG. 6 is a flowchart illustrating a method for automatically changingmotor control from open-loop control to closed-loop control inaccordance with an example.

The same reference numbers or other reference designators are used inthe drawings to designate the same or similar (either by function and/orstructure) features.

DETAILED DESCRIPTION

The embodiments described herein pertain to a motor controller capableof open-loop and closed-loop control of a sensor-less motor. The motorcontroller described herein may be used in multiple types of systemssuch as electric vehicles (EVs), industrial applications, etc. Asensor-less motor has no sensor for, for example, measuring motor speedor rotor position. Instead, during closed-loop control, based on motorcurrent, the controller estimates motor speed and rotor position anduses those estimated values to control the magnitude of the currentsupplied to the motor and thus the speed of the motor. The motorcontroller includes a speed and position estimator that estimates motorspeed and rotor position. However, at initial start-up of the motor,until the motor speed becomes large enough, the estimated values ofspeed and position based on motor current are not accurate enough to usein closed-loop control of the motor. Accordingly, the motor controllerinitializes in an open-loop control of the motor in which apre-determined value representing motor speed and a calculated rotorposition are provided for controlling the motor. As explained below, thecalculation of rotor position during open-loop control is based on aninverse exponential function with respect to time. One or moreparameters included in the inverse exponential function may be based ona mechanical property of the motor such as motor friction and/or motorinertia. The use of the inverse exponential function advantageouslypermits the motor speed to increase to its target level more quickly andwithout losing synchronization than if other functions were used such asquadratic functions characteristic of some conventional motor open-loopcontrol techniques. The open-loop acceleration of the motor using theinverse exponential function described herein achieves a more stableoperation compared to the use of quadratic function. In response to themotor's speed being sufficiently large (e.g., close to its targetspeed), the controller discontinues open-loop control and implementsclosed-loop control of the motor.

In the example described herein, the motor control technique is afield-oriented control (FOC) technique for a three-phase sensor-lessmotor (e.g., a permanent magnet synchronous motor or an inductionmotor). The FOC control technique described herein also is applicable tosingle phase and three-phase grid synchronized inverters.

FIG. 1 is a block diagram of a three-phase motor system 100. The motorsystem 100 includes a processor core 110, a storage device 120, aninput/output (I/O) interface 130, an analog-to-digital converter (ADC)150, a three-phase inverter 140, and a motor M. The processor core 110is coupled to the storage device 120 and executes software 125 stored inthe storage device 120. Storage device 120 is a non-transitory storagedevice such as volatile memory (e.g., random access memory) ornon-volatile memory (e.g., read-only memory), or combinations thereof.While a single processor core 110 is shown in FIG. 1 , other embodimentsinclude multiple processor cores that collectively execute the software125. The processor core 110 implements the functionality describedherein upon execution of software 125. Programmable values 109 may beprovided to the processor core 110 (e.g., through storage in storagedevice 120 and retrieval by the processor core 110) via any suitabletype of interface (e.g., Inter-Integrated Circuit (IIC or I2C)). Thetype and use of the programmable values is described below. The motor Mincludes three phases (e.g., a, b, and c phases), and each phase mayutilize a pair of stator windings that receives a sinusoidal, orapproximately sinusoidal, current from the three-phase inverter 140.Phases a, b, and c receive sinusoidal currents 154, 155, and 156,respectively, from the three-phase inverter 140.

The I/O interface 130 and the ADC 150 also are coupled to the processorcore 110. The processor core 110 generates control signals on signallines 115 that the I/O interface 130 outputs to the three-phase inverter140 as signals ma, mb, and mc. The I/O interface 130 may include buffersto drive signals ma, mb, and mc to the three-phase inverter 140. Asexplained below, the three-phase inverter 140 includes a pair oftransistors/switches (a high side transistor coupled to a low sidetransistor at a switch node) for each of the three phases a, b, and c.Each of the signals ma, mb, and mc from the processor core 110 is usedby the inverter 140 to implement the duty cycle for the respective highside and low side transistors. The duty cycle for the high sidetransistor is

$\frac{1 + m}{2},$

where m is the respective value of ma, mb, or mc. The duty cycle for thecorresponding low side transistor is

${1 - \frac{1 + m}{2}}.$

The values of m (and thus the duty cycle values) are varied sinusoidallyby the processor core 110. By varying the duty cycles of each pair oftransistors over time in a sinusoidal fashion for each phase, asinusoidal current for that phase is generated.

The ADC 150 receives analog signals Ia 151, Ib 152, and Ic 153 fromcurrent sensors 157, 158, and 159, respectively. Analog signals Ia, Ib,and Ic represent (e.g., are directly proportional to) the instantaneouscurrents 154, 155, and 156 of the three phases a, b, and c,respectively. In one example, each of analog signals Ia, Ib, and Ic is avoltage proportional to the instantaneous magnitude of its respectivephase current 154-156.

In one embodiment, the processor core 110, storage device 120, I/Ointerface 130, and ADC 140 are fabricated on the same integrated circuit(IC) (e.g., on a single semiconductor die or multiple semiconductor diesthat are interconnected within an IC package). In another embodiment,the storage device 120 may be fabricated on an IC separate from the ICthat includes the processor core 110, I/O interface 130, inverter 140,and ADC 150. In general, any two or more of the processor cores 110,storage device 120, I/O interface 130, inverter 140, and ADC 150 can befabricated on the same IC. In another embodiment, the three-phaseinverter 140 may be implemented on the same semiconductor die as theother circuit elements or can be fabricated on a separate semiconductordie but incorporated into the same IC package/module as the othercircuit structures.

In one example, the processor core 110, upon execution of software 125,implements an FOC technique for controlling the operation of motor M.The FOC technique described below separately controls the torque andmagnetic flux components of the motor's stator current. The followingdescription of the FOC technique is applicable to closed-loop control ofthe motor in which rotor speed and flux position are calculated based onmeasurements of motor current. Following the description of closed-loopcontrol, open-loop control is provided in which an inverse exponentialfunction with respect to time is used to estimate flux position ratherthan using motor current.

FIG. 2 is a functional block diagram 200 of the software 125 forimplementing an FOC technique to control the speed of the motor. Inalternative embodiments, the functional blocks included in FIG. 2 may beimplemented using any combination of circuitry (e.g., processors,microprocessors, microcontrollers, memory, state machines, ADCs, digitalto analog converters (DACs), flip-flops, registers, logic gates, and/orother types of logic circuits) and/or software.

The block diagram of FIG. 2 includes a Clarke transform 210, a Parktransform 220, an inverse Park transform 230, and a space vector pulsewidth modulator (PWM) 240, which are used for both open-loop andclosed-loop operation. The space vector PWM 240 includes an inverseClarke transform. The block diagram 200 further includes a speed andposition estimator 260, proportional integral (PI) controllers 271, 272,and 273, and subtractors 281, 282, and 283. The speed and positionestimator 260, subtractor 281, and PI controller 271 are used forclosed-loop operation, but not open-loop operation.

The digital values from ADC 150 (ADC 150 is not shown in FIG. 2 )corresponding to analog signals Ia, Ib, and Ic are provided as inputs tothe Clarke transform 210. In some embodiments, the digital equivalentsof two of the three analog signals Ia-Ic are used by the Clarketransform 210, as explained below. Each of the current sensors 157-159may be implemented as a sense resistor included within each of theinverter's three phases. Each phase may include a high side and low sidetransistor pair. The sense resistors may be coupled to the low sidetransistor within the respective phase. Current flows through the senseresistor only when the respective low side transistor is “on.” Becausethe low side transistor and its high side transistor counterpart arereciprocally turned “on’ and “off” at a sinusoidally varying duty cycle(explained below), the low side transistor is “off” during a portion ofeach switching period. When the low side transistor is “off,” no currentflows through the sense resistor and thus that phase's sense currentsignal (Ia-Ic) is not available for use by the Clarke transform.Accordingly, two of the sense current signals are used by the Clarketransform, with the selection varying as to which two sense currentsignals are to be used at any point in time.

The Clarke transform 210 projects the three-phase system (Ia, Ib, Ic)into a two-dimensional (α, β) orthogonal system. The Clarke transform210 implements the following equations to convert two of Ia, Ib and Icto Iα and Iβ. Currents Ia and Ib are assumed to be the two selectedcurrents in Eq. (1), but in general, Eq. (1) uses any two of the threecurrents Ia, Ib, and Ic.

$\begin{matrix}\{ \begin{matrix}{{I\alpha} = {Ia}} \\{{I\beta} = {{\frac{1}{\sqrt{3}}*{Ia}} + {\frac{2}{\sqrt{3}}*{Ib}}}}\end{matrix}  & (1)\end{matrix}$

FIG. 3 shows the relationship between the three-phase a, b, c coordinatesystem and the two-dimensional (α, β) orthogonal system. Currents Ia-Icare 120 degrees out of phase with respect to each other and are on therespective a, b and c axes in FIG. 3 . Current vector Iα is in-line withthe a-axis (the a and α-axes are colinear) and current vector Iβ isalong the β-axis. The β-axis is orthogonal to the α-axis. Vector 301 isthe complex stator current vector (Is) which is the vector sum of Iα andIβ and thus is a mathematical combination (per Eq. (1)) of the motor'scurrent signals Ia and Ib.

The Clarke transform 210 outputs Iα and Iβ as inputs to the Parktransform 220. The Park transform 220 projects the (α, β) orthogonalsystem onto a rotating reference frame (d,q) as shown in FIG. 4 . Therotating reference frame is a reference frame that spins at a constantangular speed, which may or may not be same as the speed of the rotor.For permanent magnet synchronous motors, for example, the speed of therotating reference frame is the same as rotor speed, and the d-axis ofthe rotating reference frame aligns with the d-axis of the rotor (e.g.the axis extending from the south pole of the magnet to the north poleof the magnet). Accordingly, the d-axis of the rotating reference frameis aligned with the rotor's flux. The angle θ between the α-axis and thed-axis is the rotor flux position. In closed-loop control, the rotorflux position θ is computed by the speed and position estimator 260 andis provided to the Park transform 220. The q-axis is aligned with rotortorque. Based on Iα and Iβ, in one embodiment, the Park transform 220computes the flux (Id) and torque (Iq) components in the (d,q) domain asfollows:

$\begin{matrix}\{ \begin{matrix}{{Id} = {{I\alpha*\cos(\theta)} + {I\beta*\sin(\theta)}}} \\{{Iq} = {{{- I}\alpha*\sin(\theta)} + {I\beta*\cos(\theta)}}}\end{matrix}  & (2)\end{matrix}$

The flux component Id and the torque component Iq are the outputs of thePark transform 220 and depend on the current vector components (Iα, Iβ)and on the rotor flux position θ. Per the FOC control technique,processor core 110 controls the flux current component (Id) and thetorque current component (Iq) independently.

During closed-loop operation, the speed and position estimator 260receives as inputs the outputs Iα and Iβ from the Clarke transform 210,as well as signals Vα and Vβ which are output values from the inversePark transform 230. Using the values of Iα, Iβ, Vα, and Vβ, the speedand position estimator 260 computes the back electromotive force (BEMF),and then using the computed BEMF, computes rotor speed ω and fluxposition θ. In one embodiment, the speed and position estimator 260computes the BEMF in the α, β reference frame

$( \begin{bmatrix}{E\alpha} \\{E\beta}\end{bmatrix} )$

using the following equation:

$\begin{matrix}{\begin{bmatrix}{E\alpha} \\{E\beta}\end{bmatrix} = {\begin{bmatrix}{V\alpha} \\{V\beta}\end{bmatrix} - ( {rs*\ \begin{bmatrix}{I\alpha} \\{I\beta}\end{bmatrix}} ) - {\frac{d}{dt}( {\begin{bmatrix}{L\alpha\alpha} & {L\alpha\beta} \\{L\beta\alpha} & {L\beta\beta}\end{bmatrix}*\ \begin{bmatrix}{I\alpha} \\{I\beta}\end{bmatrix}} )}}} & (3)\end{matrix}$

where rs is the motor's resistance and

$\begin{bmatrix}{L\alpha\alpha} & {L\alpha\beta} \\{L\beta\alpha} & {L\beta\beta}\end{bmatrix} = {\begin{bmatrix}{{L0} + {L1*\cos( {2\theta} )}} & {L1*\sin( {2\theta} )} \\{L1*\sin( {2\theta} )} & {{L0} - {L1*\cos( {2\theta} )}}\end{bmatrix}.}$

The inductance value

${{L0} = {{\frac{{Ld} + {Lq}}{2}{and}L1} = \frac{{Ld} - {Lq}}{2}}},$

where Ld and Lq are the d- and q-axis inductances, respectively. Thespeed and position estimator 260 computes rotor position θ duringclosed-loop operation, but the preceding equation for computing

$\begin{bmatrix}{L\alpha\alpha} & {L\alpha\beta} \\{L\beta\alpha} & {L\beta\beta}\end{bmatrix}$

uses rotor position θ. The assumption is that the motor's inductancedoes not appreciably change very quickly (e.g., within one samplinginstance) and thus the rotor position θ previously computed by the speedand position estimator 260 is used to compute the current value of motorinductance

$\begin{bmatrix}{L\alpha} \\{L\beta}\end{bmatrix}.$

In one embodiment, the speed and position estimator 260 then computesthe BEMF in the d,q rotating reference frame (Ed and Eq, respectively)based on the BEMF in the α, β reference frame and then computes rotorspeed ω and position θ as provided in equations 4-6.

$\begin{matrix}{\begin{bmatrix}{Ed} \\{Eq}\end{bmatrix} = {\begin{bmatrix}{\cos(\theta)} & {\sin(\theta)} \\{{- \sin}(\theta)} & {\cos( \theta )}\end{bmatrix}*\begin{bmatrix}{E\alpha} \\{E\beta}\end{bmatrix}}} & (4)\end{matrix}$ $\begin{matrix}{\omega = {\frac{1}{Ke}*( {{Eq} - {{sgn}(\omega)*Ed}} )}} & (5)\end{matrix}$ $\begin{matrix}{\theta = {\int{\omega*{dt}}}} & (6)\end{matrix}$

The subtractor 281 subtracts the rotor speed ω from a reference speedvalue ωref (the target speed for the motor and generated by theprocessor core 110) to produce an error value errw 289. The error valueerrw 289 is an input to the PI controller 271. In some exampleembodiments, the PI controllers 271, 272 and 273 are control loopsoftware modules that employ feedback, and in other example embodimentsthese PI controllers are implemented in hardware. In general, a PIcontroller repeatedly receives an error value that is the differencebetween a desired setpoint (e.g., reference speed value ωref in the caseof PI controller 271) and a measured process variable (e.g., rotor speedω), and generates an adjustment for another process variable based onproportional and integral terms. For example, in the case of the Hcontroller 271, the generated adjustment is Iqrefa. During closed-loopoperation, multiplexer 231 is configured to select the “1” input andthus Iqrefa is provided as the output of the multiplexer as Iqref. Theoperation of multiplexers 231 and 232 is described below.

Subtractor 282 subtracts Iq from Iqref to generate output value errq285. The PI controllers 271-273 are digital controllers that implementthe following equation:

u(t)=Kp+Ki/s  (7)

where u(t) is the ratio of the output value to the input value (e.g., anerror value) from a PI controller, Kp is a proportional gain, Ki is anintegral gain, “s” is the Laplace variable. A PI controller includes aproportional component and an integral component. The proportionalcomponent operates on the present value of the error while the integralcomponent operates on previous error values. The proportional componentensures that the steady state error becomes small, but generally cannotensure the error to be zero. However, because it operates on presenterror values, the proportional component converges relatively quickly.The integral component ensures that steady state error becomes zero.However, because it operates on previous values of error (errorhistory), it converges more slowly than the proportional component. Ingeneral, the proportional component of a PI controller reduces the errorto a relatively low value, and the integral component further reducesthe error to zero. The speed at which the PI controller 271 convergesand any overshoot or undershoot observed are determined by the values ofthe proportional gain (Kp) and the integral gain (Ki).

The outputs from the Park transform 220, Id and Iq, are flux and torquecurrent values, respectively, in the d,q rotating reference frame. TheIq component from the Park transform is subtracted from the Idref valueby subtractor 282 to produce an error value errq 285. The PI controller272 processes the value errq to compute the voltage value Vq in the(d,q) rotating reference frame. Subtractor 283 subtracts Id from a fluxreference value Idref to compute a flux error value errd 291. PIcontroller 273 receives error value errd 291 and outputs a voltage valueVd. The voltages Vq and Vd are the q-axis and d-axis voltages,respectively, applied to the motor so that the q-axis and d-axiscurrents match their respective references.

The inverse Park transform 230 transforms the rotating frame flux andtorque values Vd and Vq, respectively, into the corresponding values ofVα and Vβ in the (α, β) stationary orthogonal reference frame. The rotorflux position θ from the speed and position estimator 260 is alsoprovided to the inverse Park transform 230. In one example, the Parktransform computes Vα and Vβ as:

Vα={Vd*cos(θ)}−{Vq*sin(θ)}  (8)

Vβ={Vd*sin(θ)}+{Vq*cos(θ)}  (9)

The values Vα and Vβ are then provided to the space vector PWM 240 whichuses the values Vα and Vβ to produce the signals ma, mb, and mc thatdrive the three-phase inverter 140. The inverter 140 converts thevoltage reference values (ma, mb, mc) to duty cycles that control the onand off states of the transistors within the respective inverter phasesuch that the voltage on the phase's switch node applied to the motorhas an average voltage that is approximately the same as the voltagereference value (ma, mb, mc). The relationship between ma-mc and therespective duty cycle is provided above.

As explained above, the values of speed (ω) and rotor position (θ)computed by the speed and position estimator 260 are not necessarilyaccurate at motor start-up because speed and position is determined fromBEMF, and BEMF has relatively poor (low) signal-to-noise ratio (SNR) atlow motor speeds.

The FOC block diagram of FIG. 2 also includes an auto-handoff controller229 and multiplexers 231 and 232 (e.g., implemented in software executedby processor core 120). The auto-handoff controller 229 receives as aninput the d- and q-axis estimates of BEMF (Ed and Eq, respectively)computed by the speed and position estimator 260. The auto-handoffcontroller 229 determines (as described below) whether the motor M is tobe operated in open-loop or closed control and generates a select signal(SELECT), which is the control signal for multiplexers 231 and 232.

Any suitable technique can be implemented by the auto-handoff controller229 to determine whether open-loop control should be performed orwhether closed-loop control should be performed. In one example, theauto-handoff controller 229 repeatedly computes the BEMF of the motor Min, for example, the rotating reference frame (d,q) and determines whena vector component of the computed BEMF (e.g., the component along theq-axis) is within a threshold of the total BEMF. When the computed BEMFcomponent is within the threshold of the total BEMF, the auto-handoffcontroller 229 switches the motor controller from open-loop toclosed-loop control of the motor M. This technique is further describedin U.S. patent application Ser. No. 17/364,540 entitled “AutomaticTransition of Motor Controller From Open-Loop Control to Closed-LoopControl” and incorporated herein by reference in its entirety.

Multiplexer 231 has a first input (e.g., a 0-input) connected to theIgrefm signal and a second input (e.g., a 1-input) connected to theIqrefa signal. The select signal SELECT indicates which of the twoinputs is to provide its signal to the output. The output signal isIqref, described above with reference to the input of subtractor 282.The 0-input receives a value labeled Igrefm, which is one of theprogrammable values 109 provided to the processor core 110 (FIG. 1 ). Anexternal device (not shown) can transmit the value of Igrefm to theprocessor core 110. During open-loop operation, the SELECT signal is setto a first logic state (e.g., “0”) to cause the 0-input of themultiplexer 231 to be selected. The output from the PI controller 271 isshown as Iqrefa. During closed-loop operation, the SELECT signal is setto a second logic state (e.g., “1”) to cause the 1-input of themultiplexer 231 to be selected. During open-loop operation, Iqref isequal to Igrefm. During closed-loop operation, Iqref is equal to Irefafrom the PI controller 271.

Multiplexer 232 also has a 0-input and a 1-input. The estimated value ofrotor position θ from the speed and position estimator 260 is providedto the 1-input. The 0-input of multiplexer 232 is a calculated valueθ_openloop. The open-loop value of rotor position (θ_openloop) iscalculated based on the following equation for speed (w):

$\begin{matrix}{\omega = {\frac{Iqrefm}{B}( {1 - e^{\frac{{- B}*t}{J}}} )}} & (10)\end{matrix}$

where “t” is time measured starting from the time the motor begins tospin (i.e., time spent during open-loop operation), B is the coefficientof friction for the unloaded motor M and J is the inertia of theunloaded motor, and Iqrefm is a configuration parameter noted above. Thefraction

$\frac{Iqrefm}{B}$

represents the target speed for the motor. The values of B and J may bedetermined experimentally using any suitable technique. In one example,the value of B can be obtained by running the motor in a closed-loopoperation and sensing/measuring the current at a given speed. Thatcurrent divided by the BEMF constant provides the value of B. The valueof J can be obtained by allowing the motor to spin down without externalcontrol and measuring the time the motor take to achieve half of itsinitial speed (T_COAST). The value of J can be calculated asB*In(2)*T_COAST. Patent application Ser. No. 17/369,000 titled “A MotorController and a Method for Controlling a Motor,” incorporated herein byreference, describes these techniques. The processor core 110 integratesspeed (ω) to compute the open-loop value θ_openloop as:

θ_openloop=∫(ω)dt  (11)

FIG. 5 is a graph of speed (w) with respect to time (t). Two curves 501and 502 are shown. Curve 501 graphically illustrates the increase in theestimate of speed using the inverse exponential equation 10 above. Curve502 graphically illustrates the increase in the estimate of speed if aquadratic equation were used as may be the case in some conventionalmotor control systems. For curve 501, the estimate of speed approachesits target speed much more quickly than for curve 502. Additionally, forcurve 502, the speed ω increases in a quadratic relationship withrespect to time until the target speed is reached (identified atreference numeral 503), and then control of the motor switches to aclosed-loop control to maintain the speed at the target speed. Adiscontinuity of motor speed when the quadratic function is used occursupon the speed reaching the target as shown. This discontinuity rendersthe motor control using the quadratic function less stable than if theinverse exponential described herein was used.

As described above, previous techniques for open-loop control of themotor used a quadratic function with respect to time, e.g.,ω=(a1*t)+(a2*t²), in which a1 and a2 are positive constants determinedthrough trial and error, and the positive first term (a1*t) is added tothe positive second term (a2*t²). In another embodiment, anapproximation of the inverse exponential Eq. (10) can be used. Such anapproximation has the form of a quadratic equation and is given as:

$\begin{matrix}{\omega = {{\frac{Iqrefm}{J}t} - {\frac{{Iqrefm}*B}{J^{2}}t^{2}}}} & (12)\end{matrix}$

The fraction multiplied by “t” has Iqrefm in the numerator and inertia(J) in the denominator. In the example of Eq. (12), the positive secondterm

$( {\frac{{Iqrefm}*B}{J^{2}}t^{2}} )$

is subtracted from the positive first term

$( {\frac{Iqrefm}{J}t} ).$

It is mathematically equivalent and within the scope of this disclosurethat the second term

$( {\frac{{Iqrefm}*B}{J^{2}}t^{2}} )$

can be made negative and added to the positive first term

$( {\frac{Iqrefm}{J}t} ).$

The coefficient of t² is the ratio of the product of Iqrefm and motorfriction (B) to the square of the inertia (J²). As such, the constantsof the first and second terms are based on the properties (e.g.,friction and inertia) of the motor and are not determined through trialand error. The implementation of equation 12 may be advantageous in thatit has the same general form as the quadratic equation, which may bemore straightforward to implement in motor control software that alreadyimplements a quadratic equation for estimating speed during open-loopoperation.

In yet another embodiment, a scaling factor (γ) can be included inequation 11 to model the operation of the motor under a mechanical loadcondition. A mechanical load condition is one in which the rotor of themotor has mechanical loading in the form of either external torque to beovercome, cogging, or friction. The scaling factor γ may be in the rangeof 0 to 1 (e.g., 0.5). For example, the user may initialize the scalingfactory to a value of 0.5 and determine the performance of the motor. Ifthe motor loses synchronization, the scaling factor γ should be reduced,and the motor's performance again evaluated. If the motor does not losesynchronization, then the scaling factor γ can be increased. The scalingfactor γ is incrementally adjusted in this fashion until the largestvalue of scaling γ is determined to work without the motor losingsynchronization. In the example in which γ is used, the speed equationis:

$\begin{matrix}{\omega = {{\frac{\gamma*{Iqrefm}}{J}t} - {\frac{\gamma^{2}{Iqrefm}*B}{J^{2}}t^{2}}}} & (13)\end{matrix}$

A scaling factor (γ) can also be included in the inverse exponentialequation as follows:

$\begin{matrix}{\omega = {\frac{Iqrefm}{B}( {1 - e^{\frac{{- \gamma}*B*t}{J}}} )}} & (14)\end{matrix}$

The select signal SELECT from the auto-handoff controller 229 causes themultiplexer 232 to select between its 0-input and its 1-input. Duringopen-loop operation, the auto-handoff controller 229 asserts SELECT tothe first logic state to cause multiplexer 232 to provide θ_openloop asits output (shown in FIG. 2 as θ1) to the Park transform 220 and theinverse Park transform 230. The θ inputs to the Park and inverse Parktransforms described above are replaced with θ1 in the embodiment ofFIG. 2 .

The auto-handoff controller 229 automatically (without usingexternally-provided parameters) determines when to switch control fromopen-loop to closed-loop control. The determination of when to switchfrom open-loop to closed-loop control is implemented by the auto-handoffcontroller 229 based on the calculation of BEMF from Eq. 4 above. Thecalculation of BEMF produces BEMF components in the d and q-axes. Thevalue Ed is the component of BEMF along the d-axis, and the value Eq isthe component of BEMF along the q-axis. The total BEMF is the sum of theEd and Eq components (vector addition).

FIG. 6 is a flow chart 500 depicting an example method implemented bythe motor controller 100. At step 602, the method includes operating themotor according to an open-loop FOC operation. This step, for example,may be implemented by processor core 110 executing software 125 tocalculate motor speed ω using any of equations 10, 12, or 13 (or otherequation implementing a speed profile that is approximately an inverseexponential with respect to time) and then integrating the calculatedmotor speed to calculate rotor position open-loop value θ_openloop.Also, the auto-handoff controller 229 asserts the SELECT signal to causethe multiplexers 231 and 232 to select their 0-inputs. Open-loop FOCoperation may begin upon motor start-up (motor beginning to turn from adead stop).

At step 606, the method includes determining (e.g., by the auto-handoffcontroller 229, which may be software 125 executed by the processor core110) whether the motor should continue to be controlled in the open-loopconfiguration or whether control should switch to the closed-loopcontrol. An example of implementing this decision is described above inwhich the processor core 110 determines whether a component of theestimated BEMF is within a threshold of the total BEMF. In one example,the component is the q-axis component of the estimated BEMF and thetotal BEMF is the vector sum of the first and second orthogonalcomponents of the estimated BEMF. The threshold may be, for example, apercentage of the total BEMF. If the estimated BEMF component (e.g., Eq)is not within the threshold of the total BEMF, then the control shouldremain in the open-loop configuration. However, if the estimated BEMFcomponent is within the threshold of the total BEMF, then the controlshould switch to the closed-loop configuration.

Regardless of how the decision is implemented by the auto-handoffcontroller 229 to determine when to switch from open-loop to closed-loopcontrol, if the result of decision step 606 is “yes” (continue operatingin open-loop control of motor M), software control loops back to step602 and open-loop FOC operation continues. If the result of decisionstep 606 is “no” (switch to closed-loop operation of the motor), themethod continues to step 608 at which point the processor core 110executes software 125 to implement closed-loop FOC operation of themotor. In this step, the auto-handoff controller 229 changes motoroperation to a closed-loop FOC control (e.g., by asserting the SELECTsignal to cause the multiplexers 231 and 232 to select their 1-inputs).As described above, in closed-loop FOC operation, motor current ismeasured and used to derive rotor speed and position as feedback valuesin the FOC technique.

In this description, the term “couple” may cover connections,communications, or signal paths that enable a functional relationshipconsistent with this description. For example, if device A generates asignal to control device B to perform an action: (a) in a first example,device A is coupled to device B by direct connection; or (b) in a secondexample, device A is coupled to device B through intervening component Cif intervening component C does not alter the functional relationshipbetween device A and device B, such that device B is controlled bydevice A via the control signal generated by device A.

A device that is “configured to” perform a task or function may beconfigured (e.g., programmed and/or hardwired) at a time ofmanufacturing by a manufacturer to perform the function and/or may beconfigurable (or reconfigurable) by a user after manufacturing toperform the function and/or other additional or alternative functions.The configuring may be through firmware and/or software programming ofthe device, through a construction and/or layout of hardware componentsand interconnections of the device, or a combination thereof.

A circuit or device that is described herein as including certaincomponents may instead be adapted to be coupled to those components toform the described circuitry or device. For example, a structuredescribed as including one or more semiconductor elements (such astransistors), one or more passive elements (such as resistors,capacitors, and/or inductors), and/or one or more sources (such asvoltage and/or current sources) may instead include only thesemiconductor elements within a single physical device (e.g., asemiconductor die and/or integrated circuit (IC) package) and may beadapted to be coupled to at least some of the passive elements and/orthe sources to form the described structure either at a time ofmanufacture or after a time of manufacture, for example, by an end-userand/or a third-party.

While certain elements of the described examples are included in anintegrated circuit and other elements are external to the integratedcircuit, in other example embodiments, additional or fewer features maybe incorporated into the integrated circuit. In addition, some or all ofthe features illustrated as being external to the integrated circuit maybe included in the integrated circuit and/or some features illustratedas being internal to the integrated circuit may be incorporated outsideof the integrated. As used herein, the term “integrated circuit” meansone or more circuits that are: (i) incorporated in/over a semiconductorsubstrate; (ii) incorporated in a single semiconductor package; (iii)incorporated into the same module; and/or (iv) incorporated in/on thesame printed circuit board.

In this description, unless otherwise stated, “about,” “approximately”or “substantially” preceding a parameter means being within +/−10percent of that parameter, or, if the parameter is zero, a reasonablerange of values around zero.

Modifications are possible in the described embodiments, and otherembodiments are possible, within the scope of the claims.

1. A motor controller adapted to be coupled to a motor having a rotor,the motor controller comprising: a storage device including software;and a processor core coupled to the storage device and adapted to becoupled to the motor, the processor core configured to operate the motorin an open-loop control in response to determining a speed of the rotordetermined based on an inverse exponential function with respect to timeand to operate the motor in a closed-loop control during other periods.2. The motor controller of claim 1, wherein the inverse exponentialfunction includes a value based on a mechanical property of the motor.3. The motor controller of claim 2, wherein the mechanical property is avalue indicative of a coefficient of friction of the motor.
 4. The motorcontroller of claim 2, wherein the mechanical property is a valueindicative of an inertia of the motor.
 5. The motor controller of claim4, wherein the inverse exponential function includes an exponential termin which values of time and inertia are included in the exponentialterm.
 6. The motor controller of claim 1, wherein the inverseexponential function includes a first value based on a coefficient offriction of the motor, and the inverse exponential function includes asecond value based on an inertia of the motor.
 7. The motor controllerof claim 1, wherein the inverse exponential function includes a scalingfactor.
 8. A motor controller adapted to be coupled to a motor having arotor, the motor controller comprising: a storage device containingsoftware; and a processor core coupled to the storage device and adaptedto be coupled to the motor, the processor core configured to operate themotor in an open-loop control in response to determining a speed of therotor determined based on a quadratic function, wherein the quadraticfunction includes a first term with respect to time and a second termwith respect to the square of time, the first term including a firstmechanical property of the motor, and the second term including a secondmechanical property of the motor and a square of the first mechanicalproperty.
 9. The motor controller of claim 8, wherein the firstmechanical property is inertia.
 10. The motor controller of claim 8,wherein the second mechanical property is friction.
 11. The motorcontroller of claim 8, wherein the first mechanical property is inertiaand the second mechanical property is friction.
 12. The motor controllerof claim 8, wherein the processor is configured to subtract the secondterm from the first term.
 13. The motor controller of claim 8, whereinthe quadratic function includes a scaling factor.
 14. A method forcontrolling a motor having a rotor in an open-loop operation, the methodcomprising: calculating rotor speed based on an inverse exponentialfunction with respect to time; and generating a current for the motorbased on the calculated motor speed.
 15. The method of claim 14, whereinthe inverse exponential function includes a value based on a mechanicalproperty of the motor.
 16. The method of claim 15, wherein the value isindicative of a coefficient of friction of the motor.
 17. The method ofclaim 15, wherein the value is indicative of an inertia of the motor.18. The motor controller of claim 14, wherein the inverse exponentialfunction includes an exponential term including values of time andinertia of the motor.
 19. A method for controlling a motor having arotor in an open-loop operation, the method comprising: calculatingrotor speed by a processor core based on a quadratic function whichincludes a first term with respect to time and a second term withrespect to a square of time, the first term including a first mechanicalproperty of the motor, and the second term including a second mechanicalproperty of the motor and a square of the first mechanical property; andgenerating a current for the motor based on the calculated motor speedby the processor core.
 20. The method of claim 19, wherein the firstmechanical property is inertia and the second mechanical property isfriction.